Skip to main content

推荐系统 - 召回

01 离散特征处理

1.1 什么是离散特征?

  • 性别: 男、女两种类别
  • 国籍: 中国、美国、印度等 200 个国家
  • 英文单词: 常见的英文单词有几万个
  • 物品 ID: 小红书有几亿篇笔记,每篇笔记有一个 ID
  • 用户 ID: 小红书有几亿个用户,每个用户有一个 ID

1.2 离散特征处理

1.3 One-Hot Encoding 编码

One-Hot 编码的局限

  • 例1: 自然语言处理中,对单词做编码
    • 英文有几万个常见单词
    • 那么 one-hot 向量的维度是几万
    • 实践中一般不会用这么高纬的向量
  • 例2: 推荐系统中,对 物品ID 做编码
    • 小红书有几亿篇笔记
    • 那么 one-hot 向量的维度是几亿

类别数量太大时,通常不用 one-hot 编码

1.4 Embedding 嵌入

  • 参数数: 向量维度 × 类别数量
    • 设 embedding 得到的向量都是 4 维的
    • 一共有 200 个国籍
    • 参数数量 = 4 × 200 = 800
  • 编程实现: TensorFlow, PyTorch 提供 embedding 层
    • 参数以矩阵的形式保存,矩阵大小是 向量维度 × 类别数量
    • 输入是序号,比如"美国"的序号是 2
    • 输出是向量,比如"美国"对应参数矩阵的第 2 列

  • 数据库里一共有 10,000 部电影
  • 任务是给用户推荐电影
  • 设 embedding 向量的维度是 16
  • Embedding 层有多少参数?
    • 参数数量 = $向量维度 × 类别数量 = 160,000